﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sistema.WF.Componentes.FormulariosBase;
using Sistema.Dominio;

namespace Sistema.WF.View.NFE
{
    public partial class FRM_ConfirmaCancelamento : FRM_pai
    {
        private IList<NFeInfo> listaXml;
        public FRM_ConfirmaCancelamento(IList<NFeInfo> lista)
        {
            InitializeComponent();
            listaXml = lista;
        }

        private void CarregarTela(NFeInfo lista)
        {
            TXT_data_emissao.Text = lista.DadosOcorrencias.FirstOrDefault().DataOcorrencia.ToString();
            TXT_limite.Text = lista.DadosOcorrencias.FirstOrDefault().DataOcorrencia.AddHours((Double) new System.Configuration.AppSettingsReader().GetValue("TempoCancelamento", typeof(Double))).ToString();
            TXT_destinatario.Text = lista.Dados.DestinatarioRazaoSocial;
            TXT_numeroNota.Text = lista.Numero;
            TXT_recibo.Text = lista.DadosOcorrencias.FirstOrDefault().Protocolo;
        }
        private void Fechar()
        {
            this.Close();
            this.Dispose();
        }

        private void CMD_Nao_Click(object sender, EventArgs e)
        {
            this.Fechar();
        }

        private void CMD_Sim_Click(object sender, EventArgs e)
        {
            DateTime dataNota = listaXml.FirstOrDefault().DadosEnvio.FirstOrDefault().DataOperacao;
            if (this.verificaPermissao(listaXml)) 
            {            
                NFe.FRM_CancelarNota tela = new NFe.FRM_CancelarNota(listaXml);
                tela.Pesquisar();
                this.Fechar();
            }
            else
            {
                MessageBox.Show("Prazo de cancelamento superior ao previsto pela legislação.");
            }
                       
        }
        public void Pesquisar()
        {
            this.ShowDialog();
        }

        private void FRM_ConfirmaCancelamento_Load(object sender, EventArgs e)
        {
            this.CarregarTela(listaXml.FirstOrDefault());
            TXT_limite.Focus();
        }

        private void HabilitarBotaoSim(bool value)
        {
            CMD_Sim.Enabled = value;
        }

        private bool verificaPermissao(IList<NFeInfo> lista)
        {
            bool retorno;

            if (lista.FirstOrDefault().Dados.DataOperacao <= DateTime.Today.AddHours((Double) new System.Configuration.AppSettingsReader().GetValue("TempoCancelamento", typeof(Double))))
            {
                this.HabilitarBotaoSim(true);
                retorno = true;
            }
            else
            {
                this.HabilitarBotaoSim(false);
                retorno = false;
            }
            return retorno;

        }
    }
}
